require(['./config'], () => {
    require(['template', 'url', 'header', 'footer', 'zoom', 'fly'], (template,url, header) => {
           class xiangqing {
               constructor () {
                   this.getxiangqingbyid().then(() => {
                       this.renderxqy()
                       this.zoom()
                       this.addToCart()
                      //  this.fly()
                   })
               }
               getxiangqingbyid () {
                   const id = Number(window.location.search.slice(4))
                   return new Promise(resolve => {
                   $.get(`${url.baseUrl}/ps4xiangqingye`, { id }, resp => {
                    if (resp.code === 200) {
                        const { xqy } = resp.body
                        // 由于咱们现在用的rap2假数据，接口没有返回id，所以我们手动加上id
                        // !!! 注意：真实接口不需要加id
                        // 把detail展开，然后加上id，构成一个新的对象，给this.detail
                        this.xqy = {
                          ...xqy,
                          id
                        }
                        resolve()
                      }
                })
            })
        }
        renderxqy () {
            $('#xiangqing').html(template('xqTemplate', { ...this.xqy }))
          }
          zoom () {
            $('.fdimg').elevateZoom({
              gallery: 'gal1'
            })
          }
          // 加入购物车
          addToCart () {
            $('#add-to-cart-btn').one('click', (e) => {
              header.loadHTML().then(() => {
                header.calcCartCount()})
              // 把详情数据存localStorage
              // 先取出来
              let cart = localStorage.getItem('cart')
              // 判断是否有值
              if (cart) {
                // 购物车已经有数据了
                // 先把字符串转成数组
                cart = JSON.parse(cart)
                // 判断cart里是否已经存在当前商品
                const isExist = cart.some(shop => shop.id === this.xqy.id)
                if (isExist) {
                  // 购物车里已经存在当前商品，那么只需要把数量+1
                  cart = cart.map(shop => {
                    if (shop.id === this.xqy.id) shop.count++
                    return shop
                  })
                } else {
                  // 购物车还没有当前商品
                  // 意味着当前商品第一次加加入购物车，数量为1
                  cart.push({ ...this.xqy, count: 1, check: true })
                }
                localStorage.setItem('cart', JSON.stringify(cart))
              } else {
                // 购物车为空
                // 把当前数据存进去
                // 第一次加入购物车的时候默认处于选中状态
                localStorage.setItem('cart', JSON.stringify([ {
                  ...this.xqy,
                  count: 1,
                  check: true
                } ]))
              }
              
            })
          }
          addNum (e) {
            // $('#Num').html($('#Num').html() - 0 + 1)
            header.calcCartCount()
          }
    }
        new xiangqing()
})
})